using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Runtime.Serialization;
using System.Xml.Serialization;
using Cuahsi.Data.Interop.WaterML2.om_20;
using Cuahsi.Data.Interop.WaterML2.swe_20;
using Renci.Data.Interop.OpenGIS.Gml_32;

namespace Cuahsi.Data.Interop.WaterML2
{
    [XmlInclude(typeof(DefaultCategoricalTVPMetadataType))]
    [XmlInclude(typeof(TVPMeasurementMetadataType))]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.233")]
    [Serializable()]
    [DebuggerStepThrough()]
    [DesignerCategory("code")]
    [XmlType(Namespace = "http://www.opengis.net/waterml/2.0")]
    [XmlRoot("TVPMetadata", Namespace = "http://www.opengis.net/waterml/2.0", IsNullable = false)]
    [DataContract(Name = "TVPMetadataType", Namespace = "http://www.opengis.net/waterml/2.0")]
    public partial class TVPMetadataType
    {

        private ReferenceType qualityField;

        private ReferenceType nilReasonField;

        private string commentField;

        private List<ObservationContextPropertyType> relatedObservationField;

        private List<QualityPropertyType> qualifierField;

        private ReferenceType processingField;

        private ReferenceType sourceField;

        public TVPMetadataType()
        {
            this.qualifierField = new List<QualityPropertyType>();
            this.relatedObservationField = new List<ObservationContextPropertyType>();
        }

        [DataMember()]
        public ReferenceType quality
        {
            get
            {
                return this.qualityField;
            }
            set
            {
                this.qualityField = value;
            }
        }

        [DataMember()]
        public ReferenceType nilReason
        {
            get
            {
                return this.nilReasonField;
            }
            set
            {
                this.nilReasonField = value;
            }
        }

        [DataMember()]
        public string comment
        {
            get
            {
                return this.commentField;
            }
            set
            {
                this.commentField = value;
            }
        }

        [XmlElement("relatedObservation")]
        [DataMember()]
        public List<ObservationContextPropertyType> relatedObservation
        {
            get
            {
                return this.relatedObservationField;
            }
        }

        [XmlElement("qualifier")]
        [DataMember()]
        public List<QualityPropertyType> qualifier
        {
            get
            {
                return this.qualifierField;
            }
        }

        [DataMember()]
        public ReferenceType processing
        {
            get
            {
                return this.processingField;
            }
            set
            {
                this.processingField = value;
            }
        }

        [DataMember()]
        public ReferenceType source
        {
            get
            {
                return this.sourceField;
            }
            set
            {
                this.sourceField = value;
            }
        }
    }
}